#define MAXPOINT 20

/*
	chainValue[i][j][0] 表示以v[i]节点开始,长度为j的链的最小值
	chainValue[i][j][1] 表示以v[i]节点开始,长度为j的链的最大值
*/
int chainValue[MAXPOINT][MAXPOINT][2];

int n, *v;
char *op;

int getMaxSum()
{
	int i, k, start, max, tmp, len;

	for (i = 0; i < n; i++)
	{
		chainValue[i][0][0] = v[i];
		chainValue[i][0][1] = v[i];
		//链长为0,最大值 最小值为单个节点的值
	}

	for (len = 1; len < n; len++)//控制链的长度
	{
		for (start = 0; start < n;start++)
		{
			chainValue[start][len][0] = -32767;
			chainValue[start][len][1] = 32767;//????

			for (k = 0; k < len; k++)
			{
				chainMax(start,len,k);
			}// ????
		}

	}

}

void chainMax(int start, int len, int k)
{
	int index,a,b,c,d;// a<= m1 <=b    c <= m2 <= d

	index = (start+k+1)%n;//表示符号op 或者符号后面的操作数的下标

	
}



void MinMax(int n, int i, int s, int j, int *minf, int *maxf, int ***m, char *op)
{
	int e[4];
	int a = m[i][s][0];
	int b = m[i][s][1];
	int r = (i+s-1)%n + 1;
	int c = m[r][j-s][0];
	int d = m[r][j-s][1];

	if 
}

int PolyMax(int n)
{
	int minf,maxf;

	for (int j = 2; j <= n; j++)//问题规模的长度,顶点个数
	{
		for (int i = 1; i <= n; i++)//每次的起点
		{
			for (int s = 1; s < j; s++)
			{//划分点,取模做循环,op[s]划分
				MinMax(n, i, s, j, &minf, &maxf, m, op);
				if (m[i][j][0] < minf)
					m[i][j][0] = minf;

				if (m[i][j][1] > maxf)
					m[i][j][1] = maxf;
			}
		}
	}

	int temp = m[1][n][1];
	for (int i = 2; i <= n; i++)
	{
		if (temp < m[i][n][1])
			temp = m[i][n][1];
	}

	return temp;
}